/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2022-12-26
 * Time: 22:15
 */
public class Solution {
    //DP
    public int maxProfit(int[] prices) {
        int days=prices.length;
        //0下标表示没有持有股票
        //1下标表示持有股票
        int[][]dp=new int[days][2];
        dp[0][0]=0;
        dp[0][1]=-prices[0];
        //因为后面出现了i-2所以要初始化两个,防止数组越界
        if(days>=2){
            dp[1][0]=Math.max(dp[0][1]+prices[1],0);
            dp[1][1]=Math.max(dp[0][0]-prices[1],dp[0][1]);
        }
        for(int i=2;i<days;i++){
            //第i天没有持有股票
            //要么是当天卖出了
            //要么是这天之前就已经卖了
            dp[i][0]=Math.max(dp[i-1][1]+prices[i],dp[i-1][0]);
            //第i天持有股票
            //要么是当天买入了,但记得一定是过了冷冻期,所以当天买入,一定是在前天不持有的情况下
            //要么是之前就持有,今天没有操作
            dp[i][1]=Math.max(dp[i-2][0]-prices[i],dp[i-1][1]);
        }
        //最后的最大利润一定是没有持有股票
        return dp[days-1][0];
    }
}
